home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b9.d64 / proc.link'binary < prev    next >
Text File  |  2007-02-28  |  3KB  |  108 lines

  1. 9000 // LINK BINARY PACKAGE
  2. 9005 // BY ╩ESSE ╦NIGHT
  3. 9010 //
  4. 9015 //╘HIS PROCEDURE WILL ALLOW A
  5. 9020 //PACKAGE TO BE LINKED FROM WITHIN
  6. 9025 //A RUNNING COMAL PROGRAM. ╔T WILL
  7. 9030 //ALSO ALLOW A PACKAGE CREATED
  8. 9035 //BY AN ASSEMBLER OTHER THAN
  9. 9040 //COMMODORE'S TO BE USED.
  10. 9045 //
  11. 9050 //╞OR A PACKAGE TO BE LINKED
  12. 9055 //USING THIS PROCEDURE IT MUST
  13. 9060 //BE SAVED AS A BINARY PROGRAM
  14. 9065 //FILE. ╘HE LOAD ADDRESS FOR THE
  15. 9070 //THE FILE SHOULD GIVE THE
  16. 9075 //ADDRESS THE PACKAGE IS TO BE
  17. 9080 //LINKED AT.
  18. 9085 //
  19. 9090 //╘HIS PROCEDURE IS NOT TOTALLY
  20. 9095 //IDIOT-PROOF SO PLEASE BE CAREFUL
  21. 9100 //WHEN USING IT. ╔T WILL NOT
  22. 9105 //ALLOW PACKAGES TO BE LINKED
  23. 9110 //BELOW $8009.
  24. 9115 //
  25. 9120 ╨╥╧├ LINK'BINARY(FILEñNAME$) ├╠╧╙┼─
  26. 9125   ╒╙┼ SYSTEM
  27. 9130   ─╔═ WORK$ ╧╞ 5
  28. 9135   
  29. 9140   LIBPT:=$C7EF
  30. 9145   LIBLO:=$C7F0
  31. 9150   LIBHI:=$C7FA
  32. 9155   LIBPAG:=$C804
  33. 9160   
  34. 9165   ╔╞ ╨┼┼╦(LIBPT)=10 ╘╚┼╬ ╥┼╨╧╥╘ 76 //TOO MANY LIBRARIES
  35. 9170   
  36. 9175   ╧╨┼╬ ╞╔╠┼ 1,FILEñNAME$+",PRG",╥┼┴─
  37. 9180   
  38. 9185   WORK$:=╟┼╘$(1,5) // LOAD ADDR, PAGE, END ADDR
  39. 9190   
  40. 9195   NEWñPACKñSTART:=╧╥─(WORK$(1:1))+╧╥─(WORK$(2:2))*256
  41. 9200   NEWñPAGE:=╧╥─(WORK$(3:3))
  42. 9205   NEWñPACKñEND:=╧╥─(WORK$(4:4))+╧╥─(WORK$(5:5))*256
  43. 9210   
  44. 9215   ╔╞ NEWñPAGE>127 ╘╚┼╬ ╥┼╨╧╥╘ 73 //NON-RAM LOAD
  45. 9220   
  46. 9225   ╔╞ NEWñPACKñEND>$BFFF ╘╚┼╬ ╥┼╨╧╥╘ 75 //MEMORY PROTECTED
  47. 9230   ╔╞ NEWñPACKñSTART<$8009 ╘╚┼╬
  48. 9235     ╨╥╔╬╘ "╔ CAN'T LINK A MODULE BELOW $8009"
  49. 9240     ╙╘╧╨ 
  50. 9245   ┼╬─╔╞ 
  51. 9250   
  52. 9255   ╔╞ ╨┼┼╦(LIBPT)>2 ╘╚┼╬ //AT LEAST ONE PACKAGE IS LINKED
  53. 9260     
  54. 9265     ╞╧╥ PACKAGE#:=2 ╘╧ ╨┼┼╦(LIBPT)-1 ─╧
  55. 9270       ERROR:=╘╥╒┼
  56. 9275       
  57. 9280       ╔╞ ╨┼┼╦(LIBPAG+PACKAGE#)>128 ╧╥ MEMñPROTECTED=╞┴╠╙┼ ╘╚┼╬ ERROR:=╞┴╠╙┼
  58. 9285       
  59. 9290       ╔╞ ERROR ╘╚┼╬ ╥┼╨╧╥╘ 75 //MEMORY AREA IS PROTECTED
  60. 9295       
  61. 9300     ┼╬─╞╧╥ PACKAGE#
  62. 9305   ┼╬─╔╞ 
  63. 9310   
  64. 9315   SETPAGE(NEWñPAGE)
  65. 9320   
  66. 9325   ╨╧╦┼ NEWñPACKñSTART,NEWñPAGE
  67. 9330   ╨╧╦┼ NEWñPACKñSTART+1,NEWñPACKñEND ═╧─ 256
  68. 9335   ╨╧╦┼ NEWñPACKñSTART+2,NEWñPACKñEND ─╔╓ 256
  69. 9340   
  70. 9345   ADDR:=NEWñPACKñSTART+3
  71. 9350   
  72. 9355   ╫╚╔╠┼ ╬╧╘ ┼╧╞(1) ─╧
  73. 9360     
  74. 9365     ╨╧╦┼ ADDR,╧╥─((╟┼╘$(1,1)))
  75. 9370     ADDR:+1
  76. 9375     
  77. 9380   ┼╬─╫╚╔╠┼ 
  78. 9385   
  79. 9390   ├╠╧╙┼ ╞╔╠┼ 1
  80. 9395   
  81. 9400   ╨╧╦┼ LIBLO+╨┼┼╦(LIBPT),NEWñPACKñSTART ═╧─ 256
  82. 9405   ╨╧╦┼ LIBHI+╨┼┼╦(LIBPT),NEWñPACKñSTART ─╔╓ 256
  83. 9410   ╨╧╦┼ LIBPAG+╨┼┼╦(LIBPT),NEWñPAGE ┬╔╘┴╬─ $E7 //MASK ROMMED BIT
  84. 9415   ╨╧╦┼ LIBPT,╨┼┼╦(LIBPT)+1
  85. 9420   
  86. 9425   SENSE:=╨┼┼╦(NEWñPACKñSTART+3)+╨┼┼╦(NEWñPACKñSTART+4)*256
  87. 9430   ╨╧╦┼ $C5E8,$4C
  88. 9435   ╨╧╦┼ $C5E9,SENSE ═╧─ 256
  89. 9440   ╨╧╦┼ $C5EA,SENSE ─╔╓ 256
  90. 9445   ╨╧╦┼ $38,2
  91. 9450   ╙┘╙ $C5E8 //CALL SENSE WITH FLAG=LINK (2)
  92. 9455   
  93. 9460   ╞╒╬├ PACKñSTART 
  94. 9465     ╥┼╘╒╥╬ ╨┼┼╦(LIBLO+PACKAGE#)+╨┼┼╦(LIBHI+PACKAGE#)*256
  95. 9470   ┼╬─╞╒╬├ PACKñSTART
  96. 9475   
  97. 9480   ╞╒╬├ PACKñEND 
  98. 9485     SETPAGE(╨┼┼╦(LIBPAG+PACKAGE#))
  99. 9490     ╥┼╘╒╥╬ ╨┼┼╦(PACKñSTART+1)+╨┼┼╦(PACKñSTART+2)*256
  100. 9495   ┼╬─╞╒╬├ PACKñEND
  101. 9500   
  102. 9505   ╞╒╬├ MEMñPROTECTED 
  103. 9510     PROTECTED:=╘╥╒┼
  104. 9515     ╔╞ NEWñPACKñEND<PACKñSTART ╧╥ NEWñPACKñSTART>PACKñEND ╘╚┼╬ PROTECTED:=╞┴╠╙┼
  105. 9520     ╥┼╘╒╥╬ PROTECTED
  106. 9525   ┼╬─╞╒╬├ MEMñPROTECTED
  107. 9530 ┼╬─╨╥╧├ LINK'BINARY
  108.